Exécuter un script PHP à intervalle régulier>

Exécuter un script PHP à intervalle régulier



Qui n'a jamais eu envie de ne pas travailler et de laisser quelqu'un faire le boulot pour soit ? Bonne nouvelle ! C'est possible ! Nous appelons ce héros des temps modernes les tâches Cron !

Bon d'accord j'ai menti, elles ne vous permettront pas de vous reposer sur vos lauriers en attendant qu'arrive l'heure du repas mais concernant l'informatique, vous aller pouvoir faire de grandes choses :

  • Sauvegarder vos bases de données automatiquement
  • Envoyer des rappels à vos clients pour des factures impayées
  • Générer vos statistiques et vous envoyer le tout en PDF par mail
  • Nettoyer votre forum tous les jours à 1h15 du matin
  • Et tellement d'autres choses...
  • etc.


De manière générale, vous allez être en mesure de programmer des tâches répétées sur votre hébergement avec des scripts et ce qui va nous intéresser tout particulièrement : les scripts PHP !

Cela donne envie n'est-ce pas ? Et bien nous allons découvrir dans ce tutoriel ce petit tour de magie ! Vous verrez, rien de bien compliqué mais il fallait y penser !

"Bip Bip !" (Notification de réception du mail automatique du démarrage d'une tâche Cron)

Oh! il est temps de commencer !

Tâche Cron



Votre CPanel recèle des outils très puissants et celui qui va nous intéresser aujourd'hui est : L'outil de tâche CRON !

Si vous vous connectez à votre CPanel, vous devriez trouver ceci tout en bas dans le panneau « Avancé » :

Tâche Cron

Cliquez-dessus pour ouvrir la fenêtre :

Vous arriverez sur l'interface principale de Cron.

Tâche Cron

Vous pouvez y trouver plusieurs informations importantes :

  • Tout d'abord avec le premier volet en haut, vous pouvez configurer l'adresse email que vous voulez utiliser pour recevoir les notifications de démarrage des tâches Cron<
  • Au centre, vous trouverez le module pour ajouter une nouvelle tâche Cron
  • Tout en bas vous trouverez toutes vos tâches déjà programmées avec leurs détails. Vous pourrez aussi les modifier et le supprimer


Tout peut se faire depuis cette interface. Nous allons commencer par construire notre tâche Cron puis nous l'ajouterons à notre programme.

Planification d'une tâche Cron



Une tâche Cron est composée principalement de 2 parties :

La date/fréquence d'exécution // le script (Php ou non) à exécuter

Voici un petit exemple de tâche Cron :



Vous pouvez constater qu'elle est constituée de 6 champs séparés par des espaces dont les 5 premiers champs servent à définir les dates d'exécution du programme.

Nous allons voir en détail comment celle-ci sont formatées :



Voici le détail des champs dans l'ordre :

  1. Les minutes où le programme sera exécuté (valeurs possibles de 0 à 59)
  2. Les heures où le programme sera exécuté (valeurs possibles de 0 à 23).
  3. Les jours du mois où le programme sera exécuté (valeurs possibles de 1 à 31)
  4. Les mois où le programme sera exécuté (valeurs possibles de 1 à 12).
  5. Les jours de la semaine où le programme sera exécuté (valeurs possibles de 0 à 6 - 0 est le Dimanche et 6 le Samedi)
  6. Enfin on trouve le script à exécuter


De plus, il existe 3 caractères spéciaux :

« * » qui joue le rôle de joker et prend toutes les valeurs possibles



Il est aussi possible de donner une valeur implicite comme par exemple :



Le « /x » signifie « tous les x jour/heure/minute... ».

Le second caractère spécial est le trait d'union :

« - » qui permet de donner une plage de valeur



Enfin, le dernier caractère spécial est la virgule

« , » elle permet de coller plusieurs valeurs ou plages de valeurs ensemble :



Pour exécuter une tâche, il vous suffit de préciser les horaires d'exécution du script avec les valeurs correspondantes. Vous pouvez vous aider des sélecteurs à côté de chaque champ qui sont très largement détaillés :

Tâche Cron

Sélectionnez simplement les valeurs de votre choix. Sinon, utilisez les différents caractères vus au-dessus pour construire votre programme.

Lancer un script PHP avec Cron



Maintenant que notre plage horaire est définie, nous allons devoir indiquer dans le champ de commande l'adresse de notre script Php.

Par défaut, la commande est une commande UNIX (nous travaillons sous CloudLinux, c'est donc un système Unix). Elle n'est donc pas consciente que l'on lui demande d'exécuter un script Php.

Nous allons donc devoir lui passer deux choses avant notre script pour lui indiquer qu'il s'agit d'un script Php et qu'il faut l'interpréter comme tel :

  • L'adresse de Php dans notre système
  • le paramètre « -f » qui permet d'indiquer que nous utilisons un fichier
  • Puis seulement après le chemin de notre script Php.


Il existe plusieurs chemins possibles pour Php, vous pouvez utiliser :

- « /usr/local/bin/php » qui est le chemin par défaut de Php sur les systèmes Unix
- « php-cli » qui est le synonyme du précédent.

Cette forme sert en fait à appeler php par ligne de commande. En effet, « cli » signifie « Command Line Interface » qui se traduit par « Interface de Ligne de Commande ». Il est donc tout à fait possible d'utiliser la deuxième méthode. Par simplicité, c'est celle que nous utiliserons.

Enfin, vous allez devoir indiquer le chemin depuis la racine de votre script Php.

Celui-ci ressemble à : « /home/nom_utilisateur/public_html/un_fichier_a_la_racine_du_site.php ».

Vous devrez remplacer « nom_utilisateur » par le pseudo que vous utilisez pour vous connecter à votre CPanel.

Voici un exemple de commande complet :



Et avec la première méthode :



Une fois rentré dans la ligne de commande, vous n'avez plus qu'à valider le tout pour ajouter votre planification.

Voici un exemple complet :

Tâche Cron

Validez et votre tâche sera ajoutée et visible dans le tableau de planification :

Tâche Cron

Il nous reste un problème de taille : le spam de Cron

A chaque fois que le serveur va lancer une nouvelle tâche Cron, il va nous envoyer un mail. C'est pratique si vous ne lancez un script qu'une fois toutes les semaines ou tous les jours mais si vous en lancez plusieurs toutes les heures, cela vient très rapidement remplir votre boite mail.

Pour éviter cela, vous pouvez indiquer de ne pas envoyer de mail rajoutant à la fin de votre commande : « >/dev/null 2>&1 »

Elle devrait donc ressembler à ceci :



Tâche Cron

Voilà ! Vous ne serez désormais plus spammé par les mails de Cron !

Félicitations ! Vous savez désormais lancer des scripts php périodiquement grâce à votre CPanel !